// 题目描述：
// 一贫如洗的樵夫阿里巴巴在去砍柴的路上，无意中发现了强盗集团的藏宝地，藏宝地有编号
// 从 0~N 的箱子，每个箱子上面贴有箱子中藏有金币的数量。
// 从金币数量中选出一个数字集合，并销毁贴有这些数字的每个箱子，如果能销毁一半及以上
// 的箱子，则返回这个数字集合的最小大小。
// 输入描述：
// 一个数字字串，数字之间使用逗号分隔，例如: 6,6,6,6,3,3,3,1,1,5
// 字串中数字的个数为偶数，并且个数>=1，<=100000；每个数字>=1，<=100000；
// 输出描述：
// 这个数字集合的最小大小，例如：2
// 输入：6,6,6,6,3,3,3,1,1,5
// 输出：2


import java.util.*;

public class hashTest {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] arr  = sc.nextLine().split(",");
        Map<Integer, Integer> map = new HashMap<>();
        int l = arr.length;

        for (String s : arr) {
            int key = Integer.parseInt(s);
            if (map.containsKey(key)) {
                map.put(key, map.get(key) + 1);
            } else {
                map.put(key, 1);
            }
        }

        ArrayList<Integer> list = new ArrayList<>(map.values());
        list.sort(Collections.reverseOrder());

        int times = 0;
        for (int i = 0; i < l; i++) {
            times += list.get(i);
            if  (times * 2 > l) {
                System.out.println(i + 1);
                break;
            }
        }
    }
}
